<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    .bubble {
      --direction-y: 30px;
      --transparency: 0;
      animation: bubbling 3s forwards infinite;
    }

    /* g element wrapping up the three small fish */
    .small-fish {
      --dir-left: -800px;
      --dir-right: 800px;
      --transparency: 0;
    }

    .small-fish-1 {
      animation: move-x 6s linear forwards infinite;
    }

    .small-fish-2 {
      animation: move-x 8s linear forwards infinite;
    }

    .small-fish-3 {
      animation: move-x 10s linear forwards infinite;
    }

    @keyframes bubbling {
      0% {
        transform: translatey(var(--direction-y));
        opacity: var(--transparency);
      }
      40% {
        opacity: calc(var(--transparency) + 0.2);
      }
      70% {
        opacity: calc(var(--transparency) + 0.1);
      }
      100% {
        opacity: var(--transparency);
      }
    }


    @keyframes move-x {
      0% {
        transform: translatex(var(--dir-right));
      }
      50% {
        opacity: calc(var(--transparency) + 0.3);
      }
      100% {
        transform: translatex(var(--dir-left));
        opacity: var(--transparency);
      }
    }

    /* General styles */
    * {
      box-sizing: border-box;
    }

    *:before, *:after {
      box-sizing: inherit;
    }

    html, body {
      margin: 0;
      padding: 0;
      overflow-x: hidden;
      width: 100vw;
      height: 100vh;
      
    }

    .image-container {
      width: 100vw;
      height: 100vh;
      margin: 0;
      padding: 0;
      padding-bottom: 80%;
      position: relative;
      background: black;
    }

    svg {
      display: inline-block;
      stroke: none;
      position: absolute;
      margin: 0;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      max-width: 1000px;
      border-radius: 50%;
      background: linear-gradient(aqua, blue);
    }

  </style>
</head>
<body>
  <div class="image-container">
    <!-- SVG -->
    <svg viewBox="0 0 875.88501 656.15442" xmlns="http://www.w3.org/2000/svg" aria-labelledby="fish-title" role="img">
      <title id="fish-title">
        Smiling Big Fish and Three Small Swimming Fish
      </title>
      <g class="fish">
        <ellipse class="bubble" cx="192.421" cy="83.529" rx="39.897" ry="31.224" fill="rgba(36,115,242, 0.5)" />
        <ellipse class="bubble" cx="92.421" cy="43.529" rx="39.897" ry="31.224" fill="rgba(36,115,242, 0.8)" />
        <ellipse class="bubble" cx="175.977" cy="67.617" rx="21.078" ry="18.067" fill="rgba(36,115,242, 0.5)" />
        <ellipse class="bubble" cx="52.522" cy="106.762" rx="21.078" ry="19.572" fill="rgba(50,80,132, 0.6)" />
        <ellipse class="bubble" cx="72.847" cy="121.064" rx="23.336" ry="20.325" fill="rgba(65,72,84, 0.8)" />
        <ellipse class="bubble" cx="25.422" cy="166.984" rx="15.055" ry="15.055" fill="rgba(181,183,188, 0.5)" />
        <ellipse class="bubble" cx="95.422" cy="266.984" rx="15.055" ry="15.055" fill="rgba(181,183,188, 0.3)" />
        <ellipse class="bubble" cx="88.655" cy="206.881" rx="34.628" ry="30.864" fill="rgba(15,28,61, 0.7)" />
        <ellipse class="bubble" cx="80.419" cy="320.214" rx="24.842" ry="23.336" fill="rgba(181,183,188, 0.8)" />
        <g class="small-fish">
          <g class="small-fish-1">
            <ellipse class="small-fish-body" cx="88" cy="606" rx="54" ry="30" fill="#f2ae76" />
            <ellipse class="small-fish-eye" cx="50" cy="606" rx="8" ry="8" fill="#555" />
            <ellipse class="small-fish-tail" cx="170" cy="606" rx="30" ry="20" fill="#f2ae76" />
          </g>
          <g class="small-fish-2">
            <ellipse class="small-fish-body" cx="630" cy="500" rx="54" ry="30" fill="#f2ae76" />
            <ellipse class="small-fish-eye" cx="600" cy="500" rx="8" ry="8" fill="#555" />
            <ellipse class="small-fish-tail" cx="710" cy="500" rx="30" ry="20" fill="#f2ae76" />
          </g>
          <g class="small-fish-3">
            <ellipse class="small-fish-body" cx="318" cy="40" rx="54" ry="30" fill="#f2ae76" />
            <ellipse class="small-fish-eye" cx="290" cy="40" rx="8" ry="8" fill="#555" />
            <ellipse class="small-fish-tail" cx="398" cy="40" rx="30" ry="20" fill="#f2ae76" />
          </g>
        </g>
        <g class="rear-finn">
          <path d="M447.86 606.577l.28.562c-41.918 89.377 57.398 128.87 64.157 131.436l.125.25c.03-.064.063-.124.094-.188.11.04.437.187.437.187l10.74-43.864c41.922-89.38-68.42-85.57-75.177-88.135l-.125-.25c-.03.064-.062.123-.092.187-.11-.04-.438-.187-.438-.187z"
            fill="coral" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5"
            transform="matrix(.8715 0 0 .8574 -11.782 -31.657)" />
        </g>
        <path class="tail" d="M879.42 146.35c32.525-29.2 98.488-61.128 136.65-64.25-66.304 53.08-66.485 85.228-73.308 129.95s-31.785 104.41-29.228 191.34c2.334 79.365 32.144 153.89 38.554 200.36s2.584 85.817 63.078 135.66c-37.25-2.303-119.38-45.23-133.51-58.795-55.168-52.97-35.343-128.25-25.104-171.91 17.702-75.49-25.09-44.893-39-98.25 13.91-53.358 55.867-26.254 39.282-100.53-8.57-38.376-32.233-114.37 22.58-163.58z"
          fill="coral" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5" transform="matrix(.8715 0 0 .8574 -11.782 -31.657)"
        />
        <path class="top-finn" d="M476.54 164.03c31.92-14.784 57.418-25.23 84.893-32.808s63.49-15.874 122.68-23.67c-60.114 47.205-57.4 67.512-37.792 104.92-11.006-5.393-38.82-20.01-67.303-26.895-34.763-8.404-51.818-7.263-79.346-7.457s-46.724 5.308-55.44 8.167c-8.02 2.63-3.92-4.207 32.314-22.257z"
          fill="coral" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5" transform="matrix(.8715 0 0 .8574 -11.782 -31.657)"
        />
        <path class="fish-face" d="M588.07 400.18c0 57.47-22.2 109.53-58.076 147.21s-97.634 60.568-123.29 60.885c-16.332.202-156.19-33.57-192.07-71.258-41.127-35.165-57.613-61.813-62.64-98.6-1.965-23.01 18.247-108.21 60.047-144.93 35.878-37.69 145.49-101.53 200.19-101.53s81.89 23.32 117.76 61.01 58.078 89.744 58.078 147.21z"
          fill="orange" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5" transform="matrix(.8715 0 0 .8574 -11.782 -31.657)"
        />
        <path class="fish-mouth" d="M375.59 325.14c100.45 203.24-219.75 122.9-219.75 122.9m205.41-115.09l26.262-13.7" fill="none"
          stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5" transform="matrix(.8715 0 0 .8574 -11.782 -31.657)"
        />
        <path class="fish-body" d="M502.22 175.85c-34.267 0-66.994 5.684-97 15.945 96.538 33.01 164.81 113.77 164.81 208.12s-68.273 175.14-164.81 208.16c30.006 10.26 62.732 15.945 97 15.945 72.26 0 137.71-25.103 185.1-65.667 23.694-20.282 63.923-69.753 116.6-94.258s71.806-24.045 71.806-54.967-24.19-32.12-76.868-61.226-87.846-86.122-111.54-106.4c-47.387-40.556-112.84-65.652-185.1-65.652z"
          fill="#ff4500" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5.006" transform="matrix(.8715 0 0 .8574 -11.782 -31.657)"
        />
        <g class="front-finn">
          <path d="M634.72 775.1c-33.585 62.113-109.38-9.405-127.88-40.656-20.997-33.278-34.915-77.19 18-160.63 7.392-9.693-4.554-27.644 33.604-24.312 24.736 2.16 3.667 34.484 19.95 51.974 18.013 16.735 37.725 44.57 50.116 69.017 14.302 28.216 23.132 72.162 6.206 104.61z"
            fill="coral" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="5" transform="matrix(.8715 0 0 .8574 -11.782 -31.657)"
          />
        </g>
        <ellipse class="front-eye" cx="252" cy="215" rx="50" ry="50" stroke="#080A01" stroke-width="4" fill="#fff" />
        <ellipse class="eye-pupil" transform="translate(-162.772 -21.21)" cx="415.531" cy="236.371" rx="15" ry="15" />
      </g>
    </svg>
  </div>
</body>
</html>